/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package hero.hook;

import hero.interfaces.BnNodeLocal;
import hero.interfaces.BnNodePropertyValue;
import hero.interfaces.BnNodeValue;
import hero.interfaces.Constants;
import hero.interfaces.ProjectSession;
import hero.interfaces.ProjectSessionHome;
import hero.interfaces.ProjectSessionUtil;
import hero.interfaces.UserSession;
import hero.interfaces.UserSessionHome;
import hero.interfaces.UserSessionUtil;
import hero.util.HeroException;
import hero.util.HeroHookException;
import java.rmi.RemoteException;
import java.util.Collection;
import java.util.Date;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.CreateException;
import javax.naming.NamingException;

/**
 *
 * @author kabad
 */
public class SetearTiempoConfirmacionEstudiante implements hero.hook.NodeHookI {

    public SetearTiempoConfirmacionEstudiante() {
    }

    public String getMetadata() {
        return Constants.Nd.BEFORETERMINATE;
    }

    public void create(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void beforeStart(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void afterTerminate(Object b, BnNodeLocal nodeActivity) throws HeroHookException {
    }

    public void onCancel(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void anticipate(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void onDeadline(Object b, BnNodeLocal n) throws HeroHookException {

    }

    public void afterStart(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void onReady(Object b, BnNodeLocal n) throws HeroHookException {


    }

    public void beforeTerminate(Object b, BnNodeLocal nodeActivity) throws HeroHookException {
     setearTiempoConfirmacionEstudiante(nodeActivity);
       

    }

    public void setearTiempoConfirmacionEstudiante(BnNodeLocal nodeActivity) {
        System.out.println("Setear tiempo confirmacion estudiante");

        ProjectSessionHome prjHome;
        BnNodeValue actividad;
        UserSession usrSession;
        UserSessionHome usrHome;
        System.out.println("se he lanzado la confirmacion de los estudiantes" + nodeActivity.getBnProject().getName());
        BnNodeValue actividadAprobacion;
        Collection lista;
        String reg;
        try {
            String nombreActividad = "Confirmacion del Estudiante";
            String nombreActividadAprobacion = "Solicitud Aprobada";
            usrHome = UserSessionUtil.getHome();
            usrSession = usrHome.create();

            prjHome = (ProjectSessionHome) ProjectSessionUtil.getHome();
            ProjectSession prjSession = prjHome.create();
            prjSession.initProject(nodeActivity.getBnProject().getName());
            
               String idActividad= prjSession.getProperty("idTempSolicitudActividad").getTheValue();
            System.out.println("id temporal "+idActividad);
            prjSession.setNodeProperty( nombreActividadAprobacion,"idSolicitudActividad" ,idActividad);
          
            System.out.println("Confirmacion del Estudiante" + "instancia" + nodeActivity.getBnProject().getName());
            Vector listaFechas = new Vector();

            //setear fecha real, seteada por el profesor
            prjSession.getProperty("fechaMaxRecepcionConfirmacion");

//            lon.parseLong(nodeProperty.getTheValue());
//           
//              listaFechas.add(new Long());

            listaFechas.add(System.currentTimeMillis() + new Long(3 * 60 * 1000));
           
            System.out.println("Fecha de hoy: " + new Date());
            prjSession.setNodeDeadlines(nombreActividad, listaFechas);
            for (Object dead : prjSession.getNodeDeadlines(nombreActividad)) {
                System.out.println("Deadline: getNodeDeadlines" + dead);
            }

        } catch (RemoteException ex) {
            ex.printStackTrace();
        } catch (CreateException ex) {
            ex.printStackTrace();
        } catch (NamingException ex) {
            ex.printStackTrace();
        } catch (HeroException ex) {
            ex.printStackTrace();
        }
    }

   
}
